/*
 * @Author: hrg
 * @Date: 2023-05-17 14:58:16
 * @LastEditTime: 2024-01-22 09:57:27
 * @FilePath: \study_go\study04\03切片\demo_切片的动态添加与拷贝\main.go
 * @Description:
 */
/*
 *                   江城子 . 程序员之歌
 *
 *               十年生死两茫茫，写程序，到天亮。
 *                   千行代码，Bug何处藏。
 *               纵使上线又怎样，朝令改，夕断肠。
 *
 *               领导每天新想法，天天改，日日忙。
 *                   相顾无言，惟有泪千行。
 *               每晚灯火阑珊处，夜难寐，加班狂。
 *
 */
package main

import "fmt"

func main() {
	// 往切片中动态添加数据
	// 定义数组：
	arr := []int{7, 8, 9, 4, 5, 6}
	slice := arr[2:5]
	// 切片赋值会影响原数组
	slice[2] = 16

	fmt.Println("slice:", slice)

	// // 通过append动态追加元素：
	slice2 := append(slice, 12, 43)
	fmt.Println("slice2:", slice2)

	fmt.Println("arr", arr)

	// 通过append给切片追加切片，后位添加...后缀
	slice = append(slice, slice2...)
	fmt.Println("slice:", slice)
	fmt.Println("arr", arr)

	// 切片的拷贝（复制操作）内置函数copy实现
	// 定义一个切片：
	a := []int{1, 5, 6, 8}
	b := make([]int, 10)
	copy(b, a)
	fmt.Println("b切片拷贝a切片；结果为：", b)

}
